﻿//*******************************************************************************************************
//*																										*
//*		文件：D3D9CapsZhongWen.h																		*
//*																										*
//*		说明：对d3d9caps.h进行汉化。																	*
//*			  使用该汉化可能会导致程序效率变低。														*
//*																										*
//*		拓展：您可访问，并且强烈推荐您访问Micorsoft官方文档。											*
//*			  以获取更详细的解说及演示代码。															*
//*			  https://learn.microsoft.com/zh-cn/windows/win32/direct3d9/dx9-graphics-reference-d3d		*
//*																										*
//*******************************************************************************************************
#include "default.h"
#ifndef _D3D9CAPSZHONGWEN_H_ABCDE_
#define _D3D9CAPSZHONGWEN_H_ABCDE_

//关于内存对齐相关代码，无需汉化
#if defined(_X86_) || defined(_IA64_)
#pragma pack(4)
#endif

// ===== 顶点着色器2.0能力结构 =====
// D3DVSHADERCAPS2_0
typedef struct _顶点着色器2_0能力 {
    DWORD  能力标识 ;              // 着色器特性标志位组合（见下方宏定义）
    INT    动态流控制深度 ;         // 支持动态分支/循环的最大嵌套层数
    INT    临时寄存器数量 ;         // 可用的临时寄存器总数
    INT    静态流控制深度 ;         // 支持静态分支/循环的最大嵌套层数
} 顶点着色器2_0能力 ;

// 顶点着色器2.0能力标志
#define 顶点着色器2_0_能力_断言支持        D3DVS20CAPS_PREDICATION             // (1<<0) 支持指令断言

// 顶点着色器2.0能力范围
#define 顶点着色器2_0_最大动态流控制深度   D3DVS20_MAX_DYNAMICFLOWCONTROLDEPTH  // 24
#define 顶点着色器2_0_最小动态流控制深度   D3DVS20_MIN_DYNAMICFLOWCONTROLDEPTH  // 0
#define 顶点着色器2_0_最大临时寄存器数     D3DVS20_MAX_NUMTEMPS                // 32
#define 顶点着色器2_0_最小临时寄存器数     D3DVS20_MIN_NUMTEMPS                // 12
#define 顶点着色器2_0_最大静态流控制深度   D3DVS20_MAX_STATICFLOWCONTROLDEPTH  // 4
#define 顶点着色器2_0_最小静态流控制深度   D3DVS20_MIN_STATICFLOWCONTROLDEPTH  // 1

// ===== 像素着色器2.0能力结构 =====
// D3DPSHADERCAPS2_0
typedef struct _像素着色器2_0能力 {
    DWORD  能力标识 ;              // 着色器特性标志位组合
    INT    动态流控制深度 ;         // 动态分支/循环的最大嵌套层数
    INT    临时寄存器数量 ;         // 可用的临时寄存器总数
    INT    静态流控制深度 ;         // 静态分支/循环的最大嵌套层数
    INT    指令槽数量 ;            // 支持的指令插槽总数
} 像素着色器2_0能力 ;

// 像素着色器2.0能力标志
#define 像素着色器2_0_能力_任意通道重排     D3DPS20CAPS_ARBITRARYSWIZZLE        // (1<<0) 支持任意通道重排操作
#define 像素着色器2_0_能力_梯度指令支持     D3DPS20CAPS_GRADIENTINSTRUCTIONS    // (1<<1) 支持ddx/ddy梯度指令
#define 像素着色器2_0_能力_断言支持         D3DPS20CAPS_PREDICATION             // (1<<2) 支持指令断言
#define 像素着色器2_0_能力_无依赖读取限制   D3DPS20CAPS_NODEPENDENTREADLIMIT    // (1<<3) 无纹理依赖读取限制
#define 像素着色器2_0_能力_无纹理指令限制   D3DPS20CAPS_NOTEXINSTRUCTIONLIMIT   // (1<<4) 无纹理指令数量限制

// 像素着色器2.0能力范围
#define 像素着色器2_0_最大动态流控制深度   D3DPS20_MAX_DYNAMICFLOWCONTROLDEPTH  // 24
#define 像素着色器2_0_最小动态流控制深度   D3DPS20_MIN_DYNAMICFLOWCONTROLDEPTH  // 0
#define 像素着色器2_0_最大临时寄存器数     D3DPS20_MAX_NUMTEMPS                // 32
#define 像素着色器2_0_最小临时寄存器数     D3DPS20_MIN_NUMTEMPS                // 12
#define 像素着色器2_0_最大静态流控制深度   D3DPS20_MAX_STATICFLOWCONTROLDEPTH  // 4
#define 像素着色器2_0_最小静态流控制深度   D3DPS20_MIN_STATICFLOWCONTROLDEPTH  // 0
#define 像素着色器2_0_最大指令槽数量       D3DPS20_MAX_NUMINSTRUCTIONSLOTS     // 512
#define 像素着色器2_0_最小指令槽数量       D3DPS20_MIN_NUMINSTRUCTIONSLOTS     // 96

// ===== 着色器3.0通用限制 =====
#define 着色器3_0_最小指令数     D3DMIN30SHADERINSTRUCTIONS  // 512  支持的最低指令数量
#define 着色器3_0_最大指令数     D3DMAX30SHADERINSTRUCTIONS  // 32768 支持的最高指令数量

/* D3D9Ex 专用扩展 -- */
#if !defined(D3D_DISABLE_9EX)

// ===== 覆盖层能力结构 =====
// D3DOVERLAYCAPS
typedef struct _覆盖层能力 {
    UINT   能力标识 ;                // 支持的覆盖层特性标志位组合
    UINT   最大覆盖显示宽度 ;        // 覆盖层可显示的最大水平分辨率（像素）
    UINT   最大覆盖显示高度 ;        // 覆盖层可显示的最大垂直分辨率（像素）
} 覆盖层能力 ;

// 覆盖层色彩空间能力标志
#define 覆盖层能力_全范围RGB        D3DOVERLAYCAPS_FULLRANGERGB          // 0x00000001 支持0-255全范围RGB
#define 覆盖层能力_有限范围RGB      D3DOVERLAYCAPS_LIMITEDRANGERGB       // 0x00000002 支持16-235有限范围RGB
#define 覆盖层能力_YCbCr_BT六〇一   D3DOVERLAYCAPS_YCbCr_BT601           // 0x00000004 支持BT.601色彩空间
#define 覆盖层能力_YCbCr_BT七〇九   D3DOVERLAYCAPS_YCbCr_BT709           // 0x00000008 支持BT.709色彩空间
#define 覆盖层能力_扩展色域BT六〇一 D3DOVERLAYCAPS_YCbCr_BT601_xvYCC     // 0x00000010 支持xvYCC扩展色域的BT.601
#define 覆盖层能力_扩展色域BT七〇九 D3DOVERLAYCAPS_YCbCr_BT709_xvYCC     // 0x00000020 支持xvYCC扩展色域的BT.709
#define 覆盖层能力_水平拉伸         D3DOVERLAYCAPS_STRETCHX              // 0x00000040 支持水平方向拉伸
#define 覆盖层能力_垂直拉伸         D3DOVERLAYCAPS_STRETCHY              // 0x00000080 支持垂直方向拉伸

// ===== 内容保护能力结构 =====
// D3DCONTENTPROTECTIONCAPS
typedef struct _内容保护能力 {
    DWORD     能力标识 ;             // 内容保护特性标志位组合
    GUID      密钥交换类型 ;         // 支持的密钥交换协议类型
    UINT      缓冲区起始对齐 ;       // 受保护缓冲区的起始对齐要求（字节）
    UINT      块对齐大小 ;           // 加密块的对齐大小（字节）
    ULONGLONG 受保护内存大小 ;       // 可保护的显存总量（字节）
} 内容保护能力 ;

// 内容保护能力标志
#define 内容保护能力_软件级         D3DCPCAPS_SOFTWARE              // 0x00000001 支持软件级保护
#define 内容保护能力_硬件级         D3DCPCAPS_HARDWARE              // 0x00000002 支持硬件级保护
#define 内容保护能力_始终启用       D3DCPCAPS_PROTECTIONALWAYSON    // 0x00000004 强制持续保护
#define 内容保护能力_部分解密       D3DCPCAPS_PARTIALDECRYPTION     // 0x00000008 允许部分数据解密
#define 内容保护能力_内容密钥       D3DCPCAPS_CONTENTKEY            // 0x00000010 支持内容密钥绑定
#define 内容保护能力_会话密钥刷新   D3DCPCAPS_FRESHENSESSIONKEY     // 0x00000020 支持会话密钥更新
#define 内容保护能力_加密回读       D3DCPCAPS_ENCRYPTEDREADBACK     // 0x00000040 支持加密数据回读
#define 内容保护能力_回读密钥       D3DCPCAPS_ENCRYPTEDREADBACKKEY  // 0x00000080 回读使用独立密钥
#define 内容保护能力_顺序计数器IV   D3DCPCAPS_SEQUENTIAL_CTR_IV     // 0x00000100 使用顺序计数器初始化向量
#define 内容保护能力_仅加密切片数据  D3DCPCAPS_ENCRYPTSLICEDATAONLY  // 0x00000200 仅加密视频切片数据

// ===== 加密算法类型 =====
namespace 加密算法类型{
	extern const GUID *AES_128_CTR; // AES-128-CTR 加密算法（标准NIST算法）
	extern const GUID *私有协议; // 厂商私有加密算法
}

// ===== 密钥交换协议类型 =====
namespace 密钥交换类型{
	extern const GUID *RSAES_OAEP; // RSAES-OAEP 非对称加密协议
	extern const GUID *DXVA; // 基于DXVA的专用密钥交换
}

#endif // !D3D_DISABLE_9EX
/* -- D3D9Ex 专用扩展结束 */

// ===== Direct3D 9 设备能力结构体 =====
// D3DCAPS9
typedef struct _设备能力 {
    /* 设备基本信息 */
    设备类型    设备类型 ;           // 设备类型（硬件/软件/参考）
    UINT        适配器序号 ;         // 物理显卡索引号

    /* 基础能力标识 (继承自DX7) */
    DWORD  能力_基础 ;                  // Caps 基础设备能力标志位组合
    DWORD  能力_拓展 ;                  // Caps2 扩展能力标志位组合
    DWORD  能力_高级 ;                  // Caps3 高级能力标志位组合
    DWORD  呈现间隔支持 ;           // 支持的Present间隔模式（D3DPRESENT_INTERVAL_*）

    /* 光标能力 */
    DWORD  光标能力 ;               // 硬件光标支持特性（D3DCURSORCAPS_*）

    /* 3D核心能力 */
    DWORD  设备能力 ;               // 核心渲染能力标志（D3DDEVCAPS_*）

    /* 图元处理能力 */
    DWORD  图元杂项能力 ;           // 图元相关特性（D3DPMISCCAPS_*）
    DWORD  光栅化能力 ;             // 光栅化阶段特性（D3DPRASTERCAPS_*）
    DWORD  深度测试能力 ;           // 深度测试支持模式（D3DPCMPCAPS_*）
    DWORD  源混合因子能力 ;         // 支持的源混合因子（D3DPBLENDCAPS_*）
    DWORD  目标混合因子能力 ;       // 支持的目标混合因子（D3DPBLENDCAPS_*）
    DWORD  Alpha测试能力 ;          // Alpha测试支持模式（D3DPCMPCAPS_*）
    DWORD  着色能力 ;               // 着色模式支持（D3DPSHADECAPS_*）
    DWORD  纹理能力 ;               // 纹理相关特性（D3DPTEXTURECAPS_*）
    DWORD  纹理过滤能力 ;           // 2D纹理过滤支持（D3DPTFILTERCAPS_*）
    DWORD  立方体贴图过滤能力 ;     // 立方体贴图过滤支持
    DWORD  体纹理过滤能力 ;         // 3D体纹理过滤支持
    DWORD  纹理寻址能力 ;           // 2D纹理寻址模式支持（D3DPTADDRESSCAPS_*）
    DWORD  体纹理寻址能力 ;         // 3D体纹理寻址模式支持

    /* 线绘制能力 */
    DWORD  线绘制能力 ;             // 线图元特性（D3DLINECAPS_* 如抗锯齿）

    /* 资源限制 */
    DWORD  最大纹理宽度 ;           // 支持的最大纹理宽度（像素）
    DWORD  最大纹理高度 ;           // 支持的最大纹理高度（像素）
    DWORD  最大体纹理范围 ;         // 体纹理最大维度（长宽高最大值）
    DWORD  最大纹理重复次数 ;       // 纹理坐标最大重复次数
    DWORD  最大纹理宽高比 ;         // 纹理mipmap最大宽高比
    DWORD  最大各向异性 ;           // 各向异性过滤最大采样级数
    float  最大顶点W值 ;            // 顶点坐标W分量最大值

    /* 硬件保护带范围 */
    float  保护带左边界 ;          // 硬件加速区域左边界坐标
    float  保护带上边界 ;          // 硬件加速区域上边界坐标
    float  保护带右边界 ;          // 硬件加速区域右边界坐标
    float  保护带下边界 ;          // 硬件加速区域下边界坐标

    /* 扩展参数 */
    float  扩展调整系数 ;          // 驱动特定的扩展调整参数
    DWORD  模板测试能力 ;           // 模板测试支持模式（D3DSTENCILCAPS_*）

    /* 顶点处理 */
    DWORD  灵活顶点格式能力 ;       // 支持的灵活顶点格式（D3DFVFCAPS_*）
    DWORD  纹理混合操作能力 ;       // 支持的纹理混合操作（D3DTEXOPCAPS_*）
    DWORD  最大纹理混合阶段数 ;     // 支持的纹理混合阶段总数
    DWORD  最大同时纹理数量 ;       // 可同时绑定的纹理数量

    /* 光照与变换 */
    DWORD  顶点处理能力 ;           // 顶点处理特性（D3DVTXPCAPS_*）
    DWORD  最大激活光源数 ;         // 同时生效的光源数量上限
    DWORD  最大用户裁剪平面数 ;     // 用户自定义裁剪平面最大数量
    DWORD  最大顶点混合矩阵数 ;     // 顶点混合支持的矩阵数量
    DWORD  最大顶点混合矩阵索引 ;   // 顶点混合矩阵索引最大值

    /* 点精灵参数 */
    float  最大点尺寸 ;            // 点精灵渲染最大尺寸（像素）

    /* 绘制限制 */
    DWORD  最大图元数量 ;           // 单次DrawPrimitive调用最大图元数
    DWORD  最大顶点索引 ;           // 索引缓冲支持的最大顶点索引值
    DWORD  最大数据流数量 ;         // 支持的顶点数据流数量
    DWORD  最大数据流步长 ;         // SetStreamSource允许的最大步长（字节）

    /* 着色器能力 */
    DWORD  顶点着色器版本 ;         // 支持的顶点着色器版本（高位主版本，低位次版本）
    DWORD  最大顶点着色器常量 ;     // 顶点着色器常量寄存器数量

    DWORD  像素着色器版本 ;         // 支持的像素着色器版本
    float   像素着色器1x最大值 ;    // ps_1_x着色器寄存器可存储的最大值

    /* DirectX 9 扩展能力 */
    DWORD  设备能力扩展 ;           // 扩展能力标志位（D3DDEVCAPS2_*）

    /* 曲面细分参数 */
    float   最大N_patch细分级别 ;   // N-patch曲面细分最大级别
    DWORD   保留字段5 ;             // 未来扩展保留

    /* 多GPU配置信息 */
    UINT    主适配器序号 ;          // 适配器组中的主适配器索引
    UINT    组内适配器序号 ;        // 在适配器组中的位置序号
    UINT    组内适配器总数 ;        // 适配器组中的显卡数量（仅主适配器有效）
    
    /* 高级声明支持 */
    DWORD   支持的声明类型 ;        // 顶点声明支持的数据类型（D3DDTCAPS_*）
    
    /* 多渲染目标 */
    DWORD   同时渲染目标数量 ;      // 支持的同时渲染目标数量（至少1个）
    
    /* 拉伸矩形能力 */
    DWORD   拉伸矩形过滤能力 ;      // StretchRect支持的过滤类型（D3DPTFILTERCAPS_*）
    
    /* 着色器能力子结构 */
    顶点着色器2_0能力 顶点着色器能力 ;  // 顶点着色器2.0详细能力
    像素着色器2_0能力 像素着色器能力 ;  // 像素着色器2.0详细能力
    
    /* 高级纹理能力 */
    DWORD   顶点纹理过滤能力 ;      // 顶点着色器纹理过滤支持（D3DPTFILTERCAPS_*）
    
    /* 执行限制 */
    DWORD   最大顶点着色器指令执行数 ;    // 单顶点最大可执行指令数
    DWORD   最大像素着色器指令执行数 ;    // 单像素最大可执行指令数
    
    /* Shader Model 3.0 能力 */
    DWORD   顶点着色器3_0指令槽 ;    // vs_3_0支持的指令槽数量
    DWORD   像素着色器3_0指令槽 ;    // ps_3_0支持的指令槽数量
} 设备能力;

// ===== 设备能力位定义 =====

/* 基础能力 (Caps) */
#define 基础能力_视频覆盖支持             D3DCAPS_OVERLAY               // 0x00000800L
#define 基础能力_读取扫描线               D3DCAPS_READ_SCANLINE         // 0x00020000L

/* 拓展能力 (Caps2) */
#define 拓展能力_全屏模式伽马校正         D3DCAPS2_FULLSCREENGAMMA      // 0x00020000L
#define 拓展能力_动态伽马校准             D3DCAPS2_CANCALIBRATEGAMMA    // 0x00100000L
#define 拓展能力_保留位                  D3DCAPS2_RESERVED             // 0x02000000L
#define 拓展能力_托管资源自动同步         D3DCAPS2_CANMANAGERESOURCE    // 0x10000000L
#define 拓展能力_动态纹理分页             D3DCAPS2_DYNAMICTEXTURES      // 0x20000000L
#define 拓展能力_自动生成Mipmap          D3DCAPS2_CANAUTOGENMIPMAP     // 0x40000000L

/* D3D9Ex 专用拓展能力 */
#if !defined(D3D_DISABLE_9EX)
#define 拓展能力_资源共享支持             D3DCAPS2_CANSHARERESOURCE     // 0x80000000L
#endif

/* 高级能力 (Caps3) */
#define 高级能力_保留位                 D3DCAPS3_RESERVED             // 0x8000001fL
#define 高级能力_全屏透明混合支持       D3DCAPS3_ALPHA_FULLSCREEN_FLIP_OR_DISCARD  // 0x00000020L
#define 高级能力_线性转sRGB呈现         D3DCAPS3_LINEAR_TO_SRGB_PRESENTATION       // 0x00000080L
#define 高级能力_显存加速写入           D3DCAPS3_COPY_TO_VIDMEM        // 0x00000100L 
#define 高级能力_系统内存回读           D3DCAPS3_COPY_TO_SYSTEMMEM     // 0x00000200L
#define 高级能力_DXVAHD视频加速         D3DCAPS3_DXVAHD                // 0x00000400L

// ===== 呈现间隔模式 =====
#define 呈现间隔_默认模式       D3DPRESENT_INTERVAL_DEFAULT    // 0x00000000L 由驱动选择最佳模式
#define 呈现间隔_垂直同步一次   D3DPRESENT_INTERVAL_ONE        // 0x00000001L 每垂直刷新1次呈现
#define 呈现间隔_垂直同步二次   D3DPRESENT_INTERVAL_TWO        // 0x00000002L 每垂直刷新2次呈现
#define 呈现间隔_垂直同步三次   D3DPRESENT_INTERVAL_THREE      // 0x00000004L 每垂直刷新3次呈现
#define 呈现间隔_垂直同步四次   D3DPRESENT_INTERVAL_FOUR       // 0x00000008L 每垂直刷新4次呈现
#define 呈现间隔_立即模式       D3DPRESENT_INTERVAL_IMMEDIATE  // 0x80000000L 无等待立即呈现

// ===== 光标能力 =====
#define 光标能力_彩色支持        D3DCURSORCAPS_COLOR           // 0x00000001L 支持高分辨率(>=400p)彩色硬件光标
#define 光标能力_低分辨率支持    D3DCURSORCAPS_LOWRES          // 0x00000002L 支持低分辨率(<400p)硬件光标

// ===== 设备核心能力 =====
#define 设备能力_系统内存执行    D3DDEVCAPS_EXECUTESYSTEMMEMORY // 0x00000010L 支持系统内存执行缓冲
#define 设备能力_显存执行        D3DDEVCAPS_EXECUTEVIDEOMEMORY  // 0x00000020L 支持显存执行缓冲
#define 设备能力_系统内存TL顶点  D3DDEVCAPS_TLVERTEXSYSTEMMEMORY// 0x00000040L 支持系统内存变换光照顶点缓冲
#define 设备能力_显存TL顶点      D3DDEVCAPS_TLVERTEXVIDEOMEMORY // 0x00000080L 支持显存变换光照顶点缓冲
#define 设备能力_系统内存纹理    D3DDEVCAPS_TEXTURESYSTEMMEMORY// 0x00000100L 支持从系统内存加载纹理
#define 设备能力_显存纹理        D3DDEVCAPS_TEXTUREVIDEOMEMORY // 0x00000200L 支持从显存加载纹理
#define 设备能力_绘制TL图元      D3DDEVCAPS_DRAWPRIMTLVERTEX   // 0x00000400L 支持TLVERTEX图元绘制
#define 设备能力_翻转后渲染      D3DDEVCAPS_CANRENDERAFTERFLIP // 0x00000800L 支持在页面翻转后立即渲染
#define 设备能力_非本地显存纹理  D3DDEVCAPS_TEXTURENONLOCALVIDMEM // 0x00001000L 支持非本地显存的纹理
#define 设备能力_绘制图元二代    D3DDEVCAPS_DRAWPRIMITIVES2    // 0x00002000L 支持DrawPrimitives2接口
#define 设备能力_独立纹理内存池  D3DDEVCAPS_SEPARATETEXTUREMEMORIES // 0x00004000L 各纹理可分配至独立显存区域
#define 设备能力_扩展绘制图元二代 D3DDEVCAPS_DRAWPRIMITIVES2EX  // 0x00008000L 支持DX7兼容的扩展DrawPrimitives2
#define 设备能力_硬件变换与光照  D3DDEVCAPS_HWTRANSFORMANDLIGHT // 0x00010000L 硬件加速变换与光照处理
#define 设备能力_系统到非本地传输 D3DDEVCAPS_CANBLTSYSTONONLOCAL // 0x00020000L 支持系统内存到非本地显存的纹理传输
#define 设备能力_硬件光栅化      D3DDEVCAPS_HWRASTERIZATION    // 0x00080000L 硬件加速光栅化
#define 设备能力_纯设备模式      D3DDEVCAPS_PUREDEVICE         // 0x00100000L 支持纯设备模式(D3DCREATE_PUREDEVICE)
#define 设备能力_五次贝塞尔曲面  D3DDEVCAPS_QUINTICRTPATCHES   // 0x00200000L 支持五次贝塞尔曲线和B样条曲面
#define 设备能力_矩形三角面片    D3DDEVCAPS_RTPATCHES          // 0x00400000L 支持矩形和三角形面片
#define 设备能力_零句柄面片优化  D3DDEVCAPS_RTPATCHHANDLEZERO  // 0x00800000L 支持高效绘制句柄为0的面片
#define 设备能力_N面片曲面       D3DDEVCAPS_NPATCHES           // 0x01000000L 支持N-patch曲面细分

// ===== 图元杂项能力 =====
#define 图元杂项能力_深度掩码            D3DPMISCCAPS_MASKZ              // 0x00000002L 支持深度缓冲掩码操作
#define 图元杂项能力_无背面剔除          D3DPMISCCAPS_CULLNONE           // 0x00000010L 禁用背面剔除
#define 图元杂项能力_顺时针剔除          D3DPMISCCAPS_CULLCW             // 0x00000020L 剔除顺时针环绕的面
#define 图元杂项能力_逆时针剔除          D3DPMISCCAPS_CULLCCW            // 0x00000040L 默认剔除逆时针环绕的面
#define 图元杂项能力_颜色写入控制        D3DPMISCCAPS_COLORWRITEENABLE   // 0x00000080L 支持按通道颜色写入控制
#define 图元杂项能力_缩放点裁剪          D3DPMISCCAPS_CLIPPLANESCALEDPOINTS // 0x00000100L 正确裁剪缩放点至裁剪平面
#define 图元杂项能力_变换后顶点裁剪      D3DPMISCCAPS_CLIPTLVERTS        // 0x00000200L 支持变换后顶点图元的裁剪
#define 图元杂项能力_临时寄存器支持      D3DPMISCCAPS_TSSARGTEMP         // 0x00000400L 支持D3DTA_TEMP临时寄存器
#define 图元杂项能力_混合操作支持        D3DPMISCCAPS_BLENDOP            // 0x00000800L 支持高级混合方程式
#define 图元杂项能力_空引用设备支持      D3DPMISCCAPS_NULLREFERENCE      // 0x00001000L 不实际渲染的参考设备支持
#define 图元杂项能力_独立写入掩码        D3DPMISCCAPS_INDEPENDENTWRITEMASKS // 0x00004000L 支持MRT独立通道写入掩码
#define 图元杂项能力_逐阶段常量          D3DPMISCCAPS_PERSTAGECONSTANT   // 0x00008000L 支持逐纹理阶段的独立常量
#define 图元杂项能力_独立雾效与高光Alpha D3DPMISCCAPS_FOGANDSPECULARALPHA // 0x00010000L 雾效与高光使用独立Alpha通道
#define 图元杂项能力_独立Alpha混合       D3DPMISCCAPS_SEPARATEALPHABLEND // 0x00020000L Alpha通道独立混合设置
#define 图元杂项能力_MRT独立位深        D3DPMISCCAPS_MRTINDEPENDENTBITDEPTHS // 0x00040000L MRT支持不同位深度格式
#define 图元杂项能力_MRT像素后混合      D3DPMISCCAPS_MRTPOSTPIXELSHADERBLENDING // 0x00080000L MRT支持像素着色后混合
#define 图元杂项能力_逐顶点雾效钳制     D3DPMISCCAPS_FOGVERTEXCLAMPED    // 0x00100000L 逐顶点钳制雾效混合因子

/* D3D9Ex 专用能力 */
#if !defined(D3D_DISABLE_9EX)
#define 图元杂项能力_混合后sRGB转换      D3DPMISCCAPS_POSTBLENDSRGBCONVERT // 0x00200000L 混合后支持sRGB色彩空间转换
#endif // !D3D_DISABLE_9EX

// ===== 线绘制能力 =====
#define 线绘制能力_纹理支持        D3DLINECAPS_TEXTURE       // 0x00000001L 支持线图元纹理贴图
#define 线绘制能力_深度测试        D3DLINECAPS_ZTEST         // 0x00000002L 支持线图元深度测试
#define 线绘制能力_混合支持        D3DLINECAPS_BLEND         // 0x00000004L 支持线图元颜色混合
#define 线绘制能力_Alpha测试       D3DLINECAPS_ALPHACMP      // 0x00000008L 支持线图元Alpha测试
#define 线绘制能力_雾效支持        D3DLINECAPS_FOG           // 0x00000010L 支持线图元雾效
#define 线绘制能力_抗锯齿支持      D3DLINECAPS_ANTIALIAS     // 0x00000020L 支持线图元抗锯齿

// ===== 光栅化能力 =====
#define 光栅能力_抖动支持          D3DPRASTERCAPS_DITHER           // 0x00000001L 支持颜色抖动
#define 光栅能力_深度测试          D3DPRASTERCAPS_ZTEST            // 0x00000010L 支持深度缓冲测试
#define 光栅能力_顶点雾效          D3DPRASTERCAPS_FOGVERTEX        // 0x00000080L 支持基于顶点的雾效计算
#define 光栅能力_查表雾效          D3DPRASTERCAPS_FOGTABLE         // 0x00000100L 支持基于查表的雾效计算
#define 光栅能力_Mipmap细节偏移    D3DPRASTERCAPS_MIPMAPLODBIAS    // 0x00002000L 支持Mipmap细节级别偏移
#define 光栅能力_无深度缓冲HSR     D3DPRASTERCAPS_ZBUFFERLESSHSR   // 0x00008000L 支持无深度缓冲的隐藏面消除
#define 光栅能力_范围雾效          D3DPRASTERCAPS_FOGRANGE         // 0x00010000L 支持基于范围的雾效
#define 光栅能力_各向异性过滤      D3DPRASTERCAPS_ANISOTROPY       // 0x00020000L 支持各向异性过滤
#define 光栅能力_W缓冲支持         D3DPRASTERCAPS_WBUFFER          // 0x00040000L 支持W缓冲深度测试
#define 光栅能力_W雾效            D3DPRASTERCAPS_WFOG             // 0x00100000L 支持基于W值的雾效
#define 光栅能力_Z雾效            D3DPRASTERCAPS_ZFOG             // 0x00200000L 支持基于Z值的雾效
#define 光栅能力_透视正确色彩插值  D3DPRASTERCAPS_COLORPERSPECTIVE // 0x00400000L 支持透视正确的颜色插值
#define 光栅能力_剪裁测试          D3DPRASTERCAPS_SCISSORTEST      // 0x01000000L 支持矩形剪裁测试
#define 光栅能力_斜率深度偏移      D3DPRASTERCAPS_SLOPESCALEDEPTHBIAS // 0x02000000L 支持斜率缩放深度偏移
#define 光栅能力_深度偏移          D3DPRASTERCAPS_DEPTHBIAS        // 0x04000000L 支持固定深度偏移
#define 光栅能力_多重采样切换      D3DPRASTERCAPS_MULTISAMPLE_TOGGLE // 0x08000000L 支持多重采样动态切换

// ===== 深度/Alpha测试能力 =====
#define 比较能力_总不通过          D3DPCMPCAPS_NEVER         // 0x00000001L
#define 比较能力_小于时通过        D3DPCMPCAPS_LESS          // 0x00000002L
#define 比较能力_等于时通过        D3DPCMPCAPS_EQUAL         // 0x00000004L
#define 比较能力_小于等于通过      D3DPCMPCAPS_LESSEQUAL     // 0x00000008L
#define 比较能力_大于时通过        D3DPCMPCAPS_GREATER       // 0x00000010L
#define 比较能力_不等于时通过      D3DPCMPCAPS_NOTEQUAL      // 0x00000020L
#define 比较能力_大于等于通过      D3DPCMPCAPS_GREATEREQUAL  // 0x00000040L
#define 比较能力_总是通过          D3DPCMPCAPS_ALWAYS        // 0x00000080L

// ===== 混合因子支持能力 =====
#define 混合因子_零值             D3DPBLENDCAPS_ZERO             // 0x00000001L
#define 混合因子_一值             D3DPBLENDCAPS_ONE              // 0x00000002L
#define 混合因子_源颜色           D3DPBLENDCAPS_SRCCOLOR         // 0x00000004L
#define 混合因子_反选源颜色       D3DPBLENDCAPS_INVSRCCOLOR      // 0x00000008L
#define 混合因子_源透明度         D3DPBLENDCAPS_SRCALPHA         // 0x00000010L
#define 混合因子_反选源透明度     D3DPBLENDCAPS_INVSRCALPHA      // 0x00000020L
#define 混合因子_目标透明度       D3DPBLENDCAPS_DESTALPHA        // 0x00000040L
#define 混合因子_反选目标透明度   D3DPBLENDCAPS_INVDESTALPHA     // 0x00000080L
#define 混合因子_目标颜色         D3DPBLENDCAPS_DESTCOLOR        // 0x00000100L
#define 混合因子_反选目标颜色     D3DPBLENDCAPS_INVDESTCOLOR     // 0x00000200L
#define 混合因子_源透明度饱和     D3DPBLENDCAPS_SRCALPHASAT      // 0x00000400L
#define 混合因子_双源透明度混合   D3DPBLENDCAPS_BOTHSRCALPHA     // 0x00000800L
#define 混合因子_双反选源透明度   D3DPBLENDCAPS_BOTHINVSRCALPHA  // 0x00001000L
#define 混合因子_自定义混合因子   D3DPBLENDCAPS_BLENDFACTOR      // 0x00002000L // 支持D3DBLEND_BLENDFACTOR/INVBLENDFACTOR

/* D3D9Ex 扩展混合能力 */
#if !defined(D3D_DISABLE_9EX)
#define 混合因子_第二源颜色       D3DPBLENDCAPS_SRCCOLOR2        // 0x00004000L // 仅D3D9Ex支持
#define 混合因子_反选第二源颜色   D3DPBLENDCAPS_INVSRCCOLOR2     // 0x00008000L // 仅D3D9Ex支持
#endif // !D3D_DISABLE_9EX

// ===== 着色能力 =====
#define 着色能力_高洛德颜色插值    D3DPSHADECAPS_COLORGOURAUDRGB     // 0x00000008L 支持RGB颜色高洛德插值
#define 着色能力_高洛德镜面反射    D3DPSHADECAPS_SPECULARGOURAUDRGB  // 0x00000200L 支持镜面反射高洛德着色
#define 着色能力_高洛德Alpha混合  D3DPSHADECAPS_ALPHAGOURAUDBLEND   // 0x00004000L 支持Alpha通道高洛德混合
#define 着色能力_高洛德雾效       D3DPSHADECAPS_FOGGOURAUD          // 0x00080000L 支持雾效的高洛德插值

// ===== 纹理能力 =====
#define 纹理能力_透视校正贴图      D3DPTEXTURECAPS_PERSPECTIVE       // 0x00000001L 支持透视正确的纹理映射
#define 纹理能力_二次方尺寸要求    D3DPTEXTURECAPS_POW2              // 0x00000002L 非立方体/体积纹理需为2次幂尺寸
#define 纹理能力_Alpha通道支持     D3DPTEXTURECAPS_ALPHA             // 0x00000004L 支持带Alpha通道的纹理
#define 纹理能力_仅限方形纹理      D3DPTEXTURECAPS_SQUAREONLY        // 0x00000020L 仅支持正方形纹理
#define 纹理能力_非缩放重复寻址    D3DPTEXTURECAPS_TEXREPEATNOTSCALEDBYSIZE // 0x00000040L 纹理坐标重复不受纹理尺寸缩放
#define 纹理能力_调色板Alpha支持   D3DPTEXTURECAPS_ALPHAPALETTE      // 0x00000080L 支持从调色板纹理提取Alpha值

// 支持非二次方纹理的条件：
// 1) 纹理阶段寻址模式设为D3DTADDRESS_CLAMP
// 2) 对应坐标轴的D3DRS_WRAP(N)设为0
// 3) 禁用Mipmap过滤（仅使用放大过滤）
#define 纹理能力_条件非二次方纹理  D3DPTEXTURECAPS_NONPOW2CONDITIONAL // 0x00000100L

#define 纹理能力_投影贴图支持      D3DPTEXTURECAPS_PROJECTED         // 0x00000400L 支持D3DTTFF_PROJECTED投影纹理
#define 纹理能力_立方体贴图支持    D3DPTEXTURECAPS_CUBEMAP           // 0x00000800L 支持立方体贴图
#define 纹理能力_体纹理支持        D3DPTEXTURECAPS_VOLUMEMAP         // 0x00002000L 支持3D体积纹理
#define 纹理能力_Mipmap支持        D3DPTEXTURECAPS_MIPMAP            // 0x00004000L 支持Mipmap链生成
#define 纹理能力_体纹理Mipmap      D3DPTEXTURECAPS_MIPVOLUMEMAP      // 0x00008000L 支持体积纹理的Mipmap
#define 纹理能力_立方体Mipmap      D3DPTEXTURECAPS_MIPCUBEMAP        // 0x00010000L 支持立方体贴图的Mipmap
#define 纹理能力_立方体二次方要求  D3DPTEXTURECAPS_CUBEMAP_POW2      // 0x00020000L 立方体贴图需为2次幂尺寸
#define 纹理能力_体纹理二次方要求  D3DPTEXTURECAPS_VOLUMEMAP_POW2    // 0x00040000L 体积纹理需为2次幂尺寸
#define 纹理能力_无投影凹凸环境    D3DPTEXTURECAPS_NOPROJECTEDBUMPENV // 0x00200000L 不支持投影凹凸环境贴图着色操作

// ===== 纹理过滤能力 =====
/* 最小化过滤 */
#define 纹理过滤能力_最小点过滤        D3DPTFILTERCAPS_MINFPOINT         // 0x00000100L
#define 纹理过滤能力_最小线性过滤      D3DPTFILTERCAPS_MINFLINEAR        // 0x00000200L
#define 纹理过滤能力_最小各向异性过滤  D3DPTFILTERCAPS_MINFANISOTROPIC   // 0x00000400L
#define 纹理过滤能力_最小金字塔四过滤  D3DPTFILTERCAPS_MINFPYRAMIDALQUAD // 0x00000800L
#define 纹理过滤能力_最小高斯四过滤    D3DPTFILTERCAPS_MINFGAUSSIANQUAD  // 0x00001000L

/* Mipmap过滤 */
#define 纹理过滤能力_Mip点过滤        D3DPTFILTERCAPS_MIPFPOINT         // 0x00010000L
#define 纹理过滤能力_Mip线性过滤      D3DPTFILTERCAPS_MIPFLINEAR        // 0x00020000L

/* D3D9Ex专用过滤 */
#if !defined(D3D_DISABLE_9EX)
#define 纹理过滤能力_卷积单色过滤      D3DPTFILTERCAPS_CONVOLUTIONMONO   // 0x00040000L
#endif

/* 放大过滤 */
#define 纹理过滤能力_放大点过滤        D3DPTFILTERCAPS_MAGFPOINT         // 0x01000000L
#define 纹理过滤能力_放大线性过滤      D3DPTFILTERCAPS_MAGFLINEAR        // 0x02000000L
#define 纹理过滤能力_放大各向异性过滤  D3DPTFILTERCAPS_MAGFANISOTROPIC   // 0x04000000L
#define 纹理过滤能力_放大金字塔四过滤  D3DPTFILTERCAPS_MAGFPYRAMIDALQUAD // 0x08000000L
#define 纹理过滤能力_放大高斯四过滤    D3DPTFILTERCAPS_MAGFGAUSSIANQUAD  // 0x10000000L

// ===== 纹理寻址能力 =====
#define 寻址能力_重复模式        D3DPTADDRESSCAPS_WRAP           // 0x00000001L
#define 寻址能力_镜像模式        D3DPTADDRESSCAPS_MIRROR         // 0x00000002L
#define 寻址能力_钳制模式        D3DPTADDRESSCAPS_CLAMP          // 0x00000004L
#define 寻址能力_边框模式        D3DPTADDRESSCAPS_BORDER         // 0x00000008L
#define 寻址能力_独立UV控制      D3DPTADDRESSCAPS_INDEPENDENTUV  // 0x00000010L
#define 寻址能力_单次镜像模式    D3DPTADDRESSCAPS_MIRRORONCE     // 0x00000020L

// ===== 模板操作能力 =====
#define 模板操作_保持原值        D3DSTENCILCAPS_KEEP            // 0x00000001L
#define 模板操作_置零            D3DSTENCILCAPS_ZERO            // 0x00000002L
#define 模板操作_替换值          D3DSTENCILCAPS_REPLACE         // 0x00000004L
#define 模板操作_饱和递增        D3DSTENCILCAPS_INCRSAT         // 0x00000008L
#define 模板操作_饱和递减        D3DSTENCILCAPS_DECRSAT         // 0x00000010L
#define 模板操作_按位取反        D3DSTENCILCAPS_INVERT          // 0x00000020L
#define 模板操作_循环递增        D3DSTENCILCAPS_INCR            // 0x00000040L
#define 模板操作_循环递减        D3DSTENCILCAPS_DECR            // 0x00000080L
#define 模板操作_双面操作支持    D3DSTENCILCAPS_TWOSIDED        // 0x00000100L

// ===== 纹理混合操作能力 =====
#define 纹理操作_禁用                 D3DTEXOPCAPS_DISABLE                  // 0x00000001L 关闭本阶段纹理混合
#define 纹理操作_选择参数一            D3DTEXOPCAPS_SELECTARG1               // 0x00000002L 直接使用第一个输入参数
#define 纹理操作_选择参数二            D3DTEXOPCAPS_SELECTARG2               // 0x00000004L 直接使用第二个输入参数
#define 纹理操作_调制                 D3DTEXOPCAPS_MODULATE                 // 0x00000008L 参数相乘（基础纹理混合）
#define 纹理操作_双倍调制             D3DTEXOPCAPS_MODULATE2X               // 0x00000010L 参数相乘后结果*2
#define 纹理操作_四倍调制             D3DTEXOPCAPS_MODULATE4X               // 0x00000020L 参数相乘后结果*4
#define 纹理操作_加法                 D3DTEXOPCAPS_ADD                      // 0x00000040L 参数相加
#define 纹理操作_有符号加法            D3DTEXOPCAPS_ADDSIGNED                // 0x00000080L 参数相加后-0.5
#define 纹理操作_双倍有符号加法        D3DTEXOPCAPS_ADDSIGNED2X              // 0x00000100L (参数相加-0.5)*2
#define 纹理操作_减法                 D3DTEXOPCAPS_SUBTRACT                 // 0x00000200L 参数1 - 参数2
#define 纹理操作_平滑加法             D3DTEXOPCAPS_ADDSMOOTH                // 0x00000400L 参数1 + 参数2 - 参数1*参数2
#define 纹理操作_漫反射Alpha混合      D3DTEXOPCAPS_BLENDDIFFUSEALPHA        // 0x00000800L 使用漫反射Alpha进行混合
#define 纹理操作_纹理Alpha混合        D3DTEXOPCAPS_BLENDTEXTUREALPHA        // 0x00001000L 使用纹理Alpha进行混合
#define 纹理操作_混合因子Alpha        D3DTEXOPCAPS_BLENDFACTORALPHA         // 0x00002000L 使用D3DRS_TEXTUREFACTOR的Alpha
#define 纹理操作_预乘纹理Alpha混合    D3DTEXOPCAPS_BLENDTEXTUREALPHAPM      // 0x00004000L 使用预乘Alpha混合
#define 纹理操作_当前Alpha混合        D3DTEXOPCAPS_BLENDCURRENTALPHA        // 0x00008000L 使用前一阶段结果Alpha混合
#define 纹理操作_预调制               D3DTEXOPCAPS_PREMODULATE              // 0x00010000L 与后续阶段进行预乘
#define 纹理操作_调制Alpha加颜色      D3DTEXOPCAPS_MODULATEALPHA_ADDCOLOR   // 0x00020000L RGB = 颜色相加，A = Alpha调制
#define 纹理操作_调制颜色加Alpha      D3DTEXOPCAPS_MODULATECOLOR_ADDALPHA   // 0x00040000L RGB = 颜色调制，A = Alpha相加
#define 纹理操作_反选Alpha调制加颜色  D3DTEXOPCAPS_MODULATEINVALPHA_ADDCOLOR// 0x00080000L 使用(1-Alpha)调制颜色后相加
#define 纹理操作_反选颜色调制加Alpha  D3DTEXOPCAPS_MODULATEINVCOLOR_ADDALPHA// 0x00100000L 使用反色调制后Alpha相加
#define 纹理操作_凹凸环境映射          D3DTEXOPCAPS_BUMPENVMAP               // 0x00200000L 支持凹凸环境贴图
#define 纹理操作_亮度凹凸映射          D3DTEXOPCAPS_BUMPENVMAPLUMINANCE      // 0x00400000L 支持带亮度通道的凹凸贴图
#define 纹理操作_三维点积             D3DTEXOPCAPS_DOTPRODUCT3              // 0x00800000L 支持三维点积操作
#define 纹理操作_乘积累加             D3DTEXOPCAPS_MULTIPLYADD              // 0x01000000L 支持参数0 + 参数1*参数2
#define 纹理操作_线性插值             D3DTEXOPCAPS_LERP                     // 0x02000000L 支持参数0*参数1 + (1-参数0)*参数2

// ===== 灵活顶点格式能力 =====
#define 顶点格式能力_纹理坐标数量掩码   D3DFVFCAPS_TEXCOORDCOUNTMASK    // 0x0000ffffL 提取纹理坐标数量的掩码
#define 顶点格式能力_顶点元素非紧凑存储 D3DFVFCAPS_DONOTSTRIPELEMENTS // 0x00080000L 建议顶点元素不进行紧凑打包
#define 顶点格式能力_点尺寸支持        D3DFVFCAPS_PSIZE                // 0x00100000L 支持顶点携带点尺寸数据

// ===== 顶点处理能力 =====
#define 顶点处理能力_纹理坐标生成      D3DVTXPCAPS_TEXGEN               // 0x00000001L 支持自动纹理坐标生成
#define 顶点处理能力_DX7材质源模式     D3DVTXPCAPS_MATERIALSOURCE7      // 0x00000002L 支持DX7级材质颜色源操作
#define 顶点处理能力_定向光源支持      D3DVTXPCAPS_DIRECTIONALLIGHTS    // 0x00000008L 支持平行光源计算
#define 顶点处理能力_点光源支持        D3DVTXPCAPS_POSITIONALLIGHTS     // 0x00000010L 支持点光源/聚光灯计算
#define 顶点处理能力_局部视点支持      D3DVTXPCAPS_LOCALVIEWER          // 0x00000020L 支持局部观察者视角计算
#define 顶点处理能力_顶点形变支持      D3DVTXPCAPS_TWEENING             // 0x00000040L 支持顶点混合形变动画
#define 顶点处理能力_球面贴图坐标生成  D3DVTXPCAPS_TEXGEN_SPHEREMAP     // 0x00000100L 支持球面环境贴图坐标自动生成
#define 顶点处理能力_非局部视点纹理限制 D3DVTXPCAPS_NO_TEXGEN_NONLOCALVIEWER // 0x00000200L 非局部视点模式下禁用纹理生成

// ===== 设备扩展能力(Caps2) =====
#define 设备能力扩展_流数据偏移        D3DDEVCAPS2_STREAMOFFSET         // 0x00000001L 支持顶点流偏移(需DX9驱动)
#define 设备能力扩展_N面片位移贴图     D3DDEVCAPS2_DMAPNPATCH           // 0x00000002L 支持N面片的位移贴图
#define 设备能力扩展_RT面片自适应细分  D3DDEVCAPS2_ADAPTIVETESSRTPATCH  // 0x00000004L 支持矩形/三角面片自适应细分
#define 设备能力扩展_N面片自适应细分   D3DDEVCAPS2_ADAPTIVETESSNPATCH   // 0x00000008L 支持N面片自适应细分
#define 设备能力扩展_纹理拉伸矩形支持   D3DDEVCAPS2_CAN_STRETCHRECT_FROM_TEXTURES // 0x00000010L 支持以纹理为源的StretchRect操作
#define 设备能力扩展_预采样位移贴图    D3DDEVCAPS2_PRESAMPLEDDMAPNPATCH // 0x00000020L 支持N面片预采样位移贴图
#define 设备能力扩展_顶点元素共享偏移   D3DDEVCAPS2_VERTEXELEMENTSCANSHARESTREAMOFFSET // 0x00000040L 允许多顶点元素共享流偏移

// ===== 顶点数据类型支持 =====
#define 顶点数据类型_无符号字节四       D3DDTCAPS_UBYTE4     // 0x00000001L UBYTE4类型
#define 顶点数据类型_归一化无符号字节四 D3DDTCAPS_UBYTE4N    // 0x00000002L 范围[0,1]
#define 顶点数据类型_归一化短整型二     D3DDTCAPS_SHORT2N    // 0x00000004L 范围[-1,1]
#define 顶点数据类型_归一化短整型四     D3DDTCAPS_SHORT4N    // 0x00000008L 范围[-1,1]
#define 顶点数据类型_归一化无符号短整型二 D3DDTCAPS_USHORT2N  // 0x00000010L 范围[0,1]
#define 顶点数据类型_归一化无符号短整型四 D3DDTCAPS_USHORT4N  // 0x00000020L 范围[0,1]
#define 顶点数据类型_无符号十进制三      D3DDTCAPS_UDEC3      // 0x00000040L 10_10_10无符号格式
#define 顶点数据类型_归一化十进制三      D3DDTCAPS_DEC3N      // 0x00000080L 10_10_10有符号归一化格式
#define 顶点数据类型_半精度浮点二       D3DDTCAPS_FLOAT16_2  // 0x00000100L 16位浮点二维向量
#define 顶点数据类型_半精度浮点四       D3DDTCAPS_FLOAT16_4  // 0x00000200L 16位浮点四维向量

//关于内存对齐相关代码，无需汉化
#pragma pack()

#endif /* _D3D9CAPSZHONGWEN_H_ABCDE_ */